1. Field of the Invention
Aspects of the present invention relate generally to flow control methodologies, and more particularly to a system and method of controlling data flow that take into account flow control modes at an original ingress port and an egress port.
2. Description of Related Art
Current switching technology generally relies upon a queue controller (QC), which manages data flow through a switch as a function of the mode in which a particular ingress port is operating. Typically, the QC bases the decision to transmit or to drop a particular data frame upon the mode at the ingress port receiving the frame. In some situations, for example, when “flow control” functionality is enabled on the ingress port, the QC will never drop a frame, but rather it will issue a “pause” command to the ingress port (temporarily to cease data flow when the port is in full duplex mode) or exert “backpressure” (to perform the same function when the port is in half duplex mode) where appropriate to ensure that the ingress port receives every data frame uninterrupted. Conversely, when flow control is disabled on the ingress port, the QC may decide to discard a particular frame if the egress queue is congested (i.e., the QC need not issue a request to the ingress port to pause or exert backpressure).
It has been recognized that the foregoing method can suffer deficiencies when some ports are configured with flow control enabled and some ports are configured with flow control disabled. Further, when a data frame is transmitted cross-chip in a multiple chip switching system, the QC typically employs the flow control mode at a local ingress port, rather than the original ingress port. This scenario can create problems, for example, when the original ingress port does not have flow control enabled because cross-chip communication generally is flow control enabled when at least one port in the switch is flow control enabled. As a consequence, a frame may be treated as flow controlled (as a function of the local ingress port's configuration) even though the original source port is not expecting flow control pause or backpressure.
Hence, it would be desirable to provide a method and system that effectively account for multiple port modes in a dynamic switching environment.